﻿using System.Collections.Generic;
using System.Text;

namespace MonopolyNOHI
{
    public class Dobbelbeker
    {
        private const int _aantalDobbelstenen = 2; // aantal dobbelstenen in beker

        private readonly List<Dobbelsteen> dobbelstenen;
        private int _totaalAantalOgen;

        public Dobbelbeker()
        {
            dobbelstenen = new List<Dobbelsteen>();

            for (int i = 0; i < _aantalDobbelstenen; i++)
            {
                dobbelstenen.Add(new Dobbelsteen());
            }
        }

        public bool GetDubbel()
        {
            // Geeft true terug als de alle dobbelstenen in het spel het zelfde aantal ogen hebben
            int vorigesteen = -1;

            foreach (Dobbelsteen steen in dobbelstenen)
            {
                if (vorigesteen == -1)
                {
                    vorigesteen = steen.GetAantalOgen();
                }
                else
                {
                    if (steen.GetAantalOgen() != vorigesteen)
                    {
                        return false;
                    }
                }
            }
            return true;
        }

        public int GetTotaalOgen()
        {
            return _totaalAantalOgen;
        }

        public void GooiStenen()
        {
            _totaalAantalOgen = 0;

            foreach (Dobbelsteen steen in dobbelstenen)
            {
                steen.Gooi();
                _totaalAantalOgen += steen.GetAantalOgen();
            }
        }

        public override string ToString()
        {
            var builder = new StringBuilder();

            builder.AppendLine("\nDe dobbelstenen in de beker:");

            foreach (Dobbelsteen steen in dobbelstenen)
            {
                builder.AppendLine(steen.ToString());
            }

            builder.AppendLine("Totaal aantal ogen:\t" + GetTotaalOgen());
            builder.AppendLine("De gooi is dubbel:\t" + GetDubbel());

            return builder.ToString();
        }
    }
}